/**
 * Created by Ruben pardo.
 * Date: 14/03/12
 */


function validRegistrer(formRegistrer){
    var correct = true;

    var loginReg = document.getElementById("loginReg").value;
    var passwordReg = document.getElementById("passwordReg").value;
    var passwordReg2 = document.getElementById("passwordReg2").value;
    var email = document.getElementById("email").value;
    var fecha = document.getElementById("nacimiento").value;

    if (!esVacio(email)){
        if (isCorrectEmail(email)){
            document.getElementById("emailError").innerHTML = "";
        }else{
            document.getElementById("emailError").innerHTML = "Email incorrecto";
            correct = false;
        }
    }else{
        document.getElementById("emailError").innerHTML = "El email no puede estar vacio";
        correct = false;
    }

    if (!esVacio(fecha)){
        if (isDate(fecha)){
            document.getElementById("nacimientoError").innerHTML = "";
        }else{
            document.getElementById("nacimientoError").innerHTML = "Fecha incorrecta: Debe ser mayor de edad y haber nacido despues del 1900";
            correct = false;
        }
    }else{
        document.getElementById("nacimientoError").innerHTML = "El campo no puede estar vacio.";
        correct = false;
    }

    if (!esVacio(loginReg)){

        if (loginReg.length>2 && loginReg.length<16){
            if (tieneSoloLetrasONumeros(loginReg)){
                document.getElementById("loginRegError").innerHTML = "";
            }else{
                document.getElementById("loginRegError").innerHTML = "Solo puede contener letras (alfabeto inglés) o números.";
                correct = false;
            }
        }else{
            document.getElementById("loginRegError").innerHTML = "La longitud del usuario debe estar entre 3 y 15.";
            correct = false;
        }
    }else{
        document.getElementById("loginRegError").innerHTML = "El campo no puede estar vacio.";
        correct = false;
    }

    if (!esVacio(passwordReg)){
        if (passwordReg.length>5 && passwordReg.length<16){
            if (tieneSoloLetrasONumerosOSubrayados(passwordReg)){
                if (tieneLetrasLower(passwordReg) && tieneLetrasUpper(passwordReg) && tieneNumeros(passwordReg)){
                    document.getElementById("passwordRegError").innerHTML = "";
                }else{
                    document.getElementById("passwordRegError").innerHTML = "Debe contener almenos una mayúscula, una minúscula y un número";
                    correct = false;
                }

            }else{
                document.getElementById("passwordRegError").innerHTML = "Solo puede contener letras, números o subrayados.";
                correct = false;
            }
        }else{
            document.getElementById("passwordRegError").innerHTML = "La longitud del password debe estar entre 6 y 15.";
            correct = false;
        }
    }else{
        document.getElementById("passwordRegError").innerHTML = "El campo no puede estar vacio.";
        correct = false;
    }

    if (passwordReg == passwordReg2){
        document.getElementById("passwordReg2Error").innerHTML = "";
    }else{
        document.getElementById("passwordReg2Error").innerHTML = "Los password no coinciden.";
        correct = false;
    }

    var chkMan = document.getElementById("hombre");
    var chkWomen = document.getElementById("mujer");

    //Si no se ha seleccionado ninguna opcion en sexo
    if (chkMan.checked == false && chkWomen.checked==false){
        document.getElementById("sexError").innerHTML = "Debe seleccionar una opción.";
        correct = false;
    }else{
        document.getElementById("sexError").innerHTML = "";
    }

    return correct;
    //return false;
}

//Funcion que comprueba si un texto tiene el formato de un mail
function isCorrectEmail(mail){
	var re = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
    return re.test(mail);
}

//Funcion de validacion de la fecha
function isDate(input){
	var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
	if (re.test(input)){
		var cachos = input.split('/');
		var day = parseInt(cachos[0]);
        var month = parseInt(cachos[1]);
        var year = parseInt(cachos[2]);
        var dateStr = month+"/"+day+"/"+year;
        var date = new Date(dateStr);
        var today = new Date();


        //Comprobacion de si es mayor de edad (en anyos en el que se cumple) y comprobacion de si
        //no tienes mas de 112 anyos, a gente tan mayor les debe sentar mal registrarse aqui
        if (year > (today.getFullYear()-18) || year<1900){
            return false;
        }
        //Si el dia es distingo la fecha esta mal
        if (date.getDate() != day){
            return false;
        }
        //Si el mes es distinto la fecha esta mal
        if (date.getMonth() != month-1){
            return false;
        }
        //Si el anyo es distinto la fecha esta mal
        if (date.getFullYear() != year){
            return false;
        }

	}else{
		alert("No pasado");
		return false;
	}
    return true;
}

//Comprueba si una cadena tiene solo letras o numeros
function tieneSoloLetrasONumeros(text){
	var re = /^[a-zA-Z0-9]+$/;
   	return re.test(text);
}

//Comprueba si una cadena tiene solo letras o numeros
function tieneSoloLetrasONumerosOSubrayados(text){
	var re = /^[a-zA-Z0-9_]+$/;
   	return re.test(text);
}

//Funcion que te dice si un texto tiene numeros
function tieneNumeros(text){
	var re = /[.]*[0-9]+[.]*/;
	console.log("Numeros: "+re.test(text));
	return re.test(text);
} 

//Funcion que te dice si un texto tiene letras minusculas
function tieneLetrasLower(text){
	var re = /[.]*[a-z]+[.]*/;

	console.log("Minusc: "+re.test(text));
   return re.test(text);
}

//Funcion que te dice si un texto tiene letras mayusculas
function tieneLetrasUpper(text){
	var re = /[.]*[A-Z]+[.]*/;
	console.log("Mayusc: "+re.test(text));
   return re.test(text);
}